home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Linux Cubed Series 8: LINUX Games
/
Linux Cubed Series 8 - LINUX Games.iso
/
games
/
doom
/
doom-dsp.tgz
/
doom-dsp.tar
/
doom-dsp16to8.patch
< prev
next >
Wrap
Text File
|
1994-12-15
|
6KB
|
195 lines
Only in linux.jon/drivers/sound: ad1848.c^
diff -r -u linux/drivers/sound/audio.c linux.jon/drivers/sound/audio.c
--- linux/drivers/sound/audio.c Mon Jul 18 07:50:55 1994
+++ linux.jon/drivers/sound/audio.c Fri Dec 9 12:03:44 1994
@@ -173,6 +173,7 @@
p = 0;
c = count;
+
if (audio_mode[dev] == AM_READ) /*
* Direction changed
*/
Only in linux.jon/drivers/sound: audio.c^
Binary files linux/drivers/sound/configure and linux.jon/drivers/sound/configure differ
diff -r -u linux/drivers/sound/dmabuf.c linux.jon/drivers/sound/dmabuf.c
--- linux/drivers/sound/dmabuf.c Tue Aug 23 07:48:52 1994
+++ linux.jon/drivers/sound/dmabuf.c Fri Dec 9 12:34:04 1994
@@ -443,7 +443,9 @@
{
int fact = IOCTL_IN (arg);
int bytes, count;
+ extern int sb_16bit_fake;
+
if (fact == 0)
return RET_ERROR (EIO);
@@ -452,6 +454,9 @@
return RET_ERROR (EINVAL);
bytes = fact & 0xffff;
+ if (sb_16bit_fake)
+ bytes--;
+
count = (fact >> 16) & 0xffff;
if (count == 0)
Only in linux.jon/drivers/sound: dmabuf.c^
Binary files linux/drivers/sound/dmabuf.o and linux.jon/drivers/sound/dmabuf.o differ
Only in linux.jon/drivers/sound: int
diff -r -u linux/drivers/sound/sb_dsp.c linux.jon/drivers/sound/sb_dsp.c
--- linux/drivers/sound/sb_dsp.c Fri Aug 19 06:54:09 1994
+++ linux.jon/drivers/sound/sb_dsp.c Fri Dec 9 12:45:07 1994
@@ -40,6 +40,7 @@
#undef SB_TEST_IRQ
int sbc_base = 0;
+int sb_16bit_fake = 1;
static int sbc_irq = 0;
static int open_mode = 0; /* Read, write or both */
@@ -94,6 +95,27 @@
#if !defined(EXCLUDE_MIDI) || !defined(EXCLUDE_AUDIO)
+
+void
+sb_16_8_copy_from_user(int dev, char *localbuf, int localoffs,
+ snd_rw_buf * userbuf, int useroffs, int len)
+{
+ int i;
+ unsigned short in;
+ unsigned char *out = &localbuf[localoffs];
+
+ if (sb_16bit_fake) {
+ for(i=0;i<len;i++) {
+ GET_SHORT_FROM_USER (in, (short *) userbuf, useroffs);
+ useroffs ++;
+ in ^= 0x8000;
+ out[i] = (in>>8);
+ }
+ } else {
+ COPY_FROM_USER (&localbuf[localoffs], userbuf, useroffs, len);
+ }
+
+}
/*
* Common code for the midi and pcm functions
*/
@@ -739,7 +761,7 @@
{
"SoundBlaster",
NOTHING_SPECIAL,
- AFMT_U8, /* Just 8 bits. Poor old SB */
+ AFMT_U8 | AFMT_S16_LE, /* Just 8 bits. Poor old SB */
NULL,
sb_dsp_open,
sb_dsp_close,
@@ -751,7 +773,7 @@
sb_dsp_reset,
sb_dsp_halt_xfer,
NULL, /* local_qlen */
- NULL /* copy_from_user */
+ sb_16_8_copy_from_user /* copy_from_user */
};
#endif
Only in linux.jon/drivers/sound: sb_dsp.c^
Binary files linux/drivers/sound/sb_dsp.o and linux.jon/drivers/sound/sb_dsp.o differ
Binary files linux/drivers/sound/sound.a and linux.jon/drivers/sound/sound.a differ
diff -r -u linux/drivers/sound/sound_config.h linux.jon/drivers/sound/sound_config.h
--- linux/drivers/sound/sound_config.h Fri Aug 19 06:54:10 1994
+++ linux.jon/drivers/sound/sound_config.h Fri Dec 9 19:10:17 1994
@@ -193,7 +193,7 @@
#define SND_DEV_SEQ2 8 /* /dev/sequencer, level 2 interface */
#define SND_DEV_SNDPROC 9 /* /dev/sndproc for programmable devices */
#define SND_DEV_PSS SND_DEV_SNDPROC
-
+#define SND_DEV_DSP16_8 11 /* Like /dev/dsp but emulate 16 bits/sample */
#define DSP_DEFAULT_SPEED 8000
#define ON 1
Only in linux.jon/drivers/sound: sound_config.h^
diff -r -u linux/drivers/sound/sound_switch.c linux.jon/drivers/sound/sound_switch.c
--- linux/drivers/sound/sound_switch.c Mon Jul 18 07:50:55 1994
+++ linux.jon/drivers/sound/sound_switch.c Fri Dec 9 19:23:37 1994
@@ -52,6 +52,7 @@
static char *status_buf = NULL;
static int status_len, status_ptr;
static int status_busy = 0;
+extern int sb_16bit_fake;
static int
put_status (char *s)
@@ -286,6 +287,7 @@
break;
case SND_DEV_DSP:
+ case SND_DEV_DSP16_8:
case SND_DEV_DSP16:
case SND_DEV_AUDIO:
return audio_read (dev, file, buf, count);
@@ -316,7 +318,6 @@
int
sound_write_sw (int dev, struct fileinfo *file, snd_rw_buf * buf, int count)
{
-
DEB (printk ("sound_write_sw(dev=%d, count=%d)\n", dev, count));
switch (dev & 0x0f)
@@ -327,11 +328,13 @@
return sequencer_write (dev, file, buf, count);
break;
- case SND_DEV_DSP:
+
+ case SND_DEV_DSP16_8:
+ return (2* audio_write (dev, file, buf, count/2));
case SND_DEV_DSP16:
case SND_DEV_AUDIO:
- return audio_write (dev, file, buf, count);
- break;
+ case SND_DEV_DSP:
+ return audio_write (dev, file, buf, count);
#ifndef EXCLUDE_MIDI
case SND_DEV_MIDIN:
@@ -398,10 +401,15 @@
return retval;
break;
#endif
-
- case SND_DEV_DSP:
+ case SND_DEV_DSP16_8:
+ sb_16bit_fake = 1;
+ if ((retval = audio_open (((dev & 0xfffffff0) | SND_DEV_DSP), file)) < 0)
+ return retval;
+ break;
case SND_DEV_DSP16:
+ case SND_DEV_DSP:
case SND_DEV_AUDIO:
+ sb_16bit_fake = 0;
if ((retval = audio_open (dev, file)) < 0)
return retval;
break;
@@ -454,6 +462,7 @@
case SND_DEV_DSP:
case SND_DEV_DSP16:
+ case SND_DEV_DSP16_8:
case SND_DEV_AUDIO:
audio_release (dev, file);
break;
@@ -501,6 +510,7 @@
case SND_DEV_DSP:
case SND_DEV_DSP16:
+ case SND_DEV_DSP16_8:
case SND_DEV_AUDIO:
return audio_ioctl (dev, file, cmd, arg);
break;
Only in linux.jon/drivers/sound: sound_switch.c^
Binary files linux/drivers/sound/sound_switch.o and linux.jon/drivers/sound/sound_switch.o differ
Only in linux.jon/drivers/sound: soundcard.c^